package cn.duli.xianer.service;

import cn.duli.xianer.pojo.Orders;
import com.github.pagehelper.Page;

import java.util.List;
import java.util.Set;

public interface OrdersService {

    // 新增订单
    int save(Orders orders);

    // 根据订单表id查询订单详情
    Orders findById(Integer oId);

    // 更新订单状态、添加支付时间和支付宝交易流水号（支付宝回调结束后会返回异步通知）
    boolean updateOrderStatusByoNo(String parentNo, String payTime, String alipayNo);

    // 根据订单号查询订单
    Orders findByOrderNum(String orderNum);

    // 根据用户id查询订单列表
    Page<Orders> findOrdersByuId(Integer uId);

    // 根据id删除此订单
    int deleteById(Integer oId);

    //根据订单id去发货（更改订单状态为待收货），和更改发货时间
    int updateDeliverStatus(Integer oId);

    // 根据订单id确认收货（更改订单状态为交易成功），和更改确认收货时间
    int updateConfirmOrder(Integer oId);

    // 根据订单id关闭交易(订单状态为已取消)
    int updateOrderClose(Integer oId);

    // 根据总订单编号查询相关订单列表
    List<Orders> findByParentNo(String parentNo);

    // 根据商品Id查询订单
    Orders findByGoodId(Integer gId);

    // 分组查询待付款的订单列表
    List<Orders> findNotPad(Integer uId);

    // 分页根据订单状态查询订单列表
    Page<Orders> findByStatusPage(String status, Integer uId);

    // 根据订单状态查询订单列表
    List<Orders> findByOrderStatus();

    // 根据订单中商品的发布用户id查询订单列表（我卖出的订单列表）
    Page<Orders> findSellList(Integer uId);

    // 分页根据订单中商品的发布用户id和订单状态查询订单列表（我卖出的）
    Page<Orders> findByStatusBySell(String status, Integer uId);

    // 根据订单id修改订单状态
    int updateOrderStatus(Integer oId, Integer status);

    // 查询所有订单
    Page<Orders> findAll();

    // 查询交易成功的订单列表
    List<Orders> findSuccess();

    // 根据商品id查询订单列表
    List<Orders> findOrdersByGid(Integer gId,Integer uid);

    // 根据当前登录用户id查找此用户购买的订单商品列表
    List<Orders> findByCurrentUid(Integer uId);

    // 根据用户id查询订单列表
    List<Orders> findByOthersUid(Integer uId);


}
